home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1985-08-14 | 9.1 KB | 198 lines
1 ' ****************************** 2 ' * LABEL MAKER 4.0 * 3 ' * LBLPNT.BAS * 4 ' * AUGUST 14, 1985 * 5 ' ****************************** 9 ' ***** INITIALIZE THE PROGRAM ***** 10 CLEAR 3000 : KEY OFF 20 DEF FN A$(Y)=STRING$(Y,32): DEF FN B$(LL)=STRING$(LL,"-") 30 DEFINT I-N 40 DEF SEG=0 ' check for color monitor 50 IF (PEEK(&H410) AND &H30)=&H30 THEN CLR=0 ELSE CLR=1 60 IF CLR THEN COLOR 14,0 ' if clr=1 a color monitor is attached 70 CLS: LINECOUNT=0: I=1 80 DIM FILE$(300), COMMENTS$(10) 90 ON ERROR GOTO 6000 99 ' ***** READ IN DATA ***** 100 OPEN "NAMEDISK.ZQW" FOR INPUT AS #1 110 IF EFLAG=53 THEN EFLAG=0: PRINT TAB(28)"Disk has not been named.": PRINT: PRINT TAB(24)"Return to DOS and run LBL.BAT.": PRINT: PRINT TAB(10)"Hit <ENTER> to return to DOS.";: INPUT ZZ$: SYSTEM 120 IF EFLAG<>0 THEN GOTO 6500 130 INPUT #1,DISKNAME$, CN$, FREEBYTES, BYTESUSED, DS$, TYPEPRINTER$ ' read the DISKNAME from the disk in Default Drive 140 IF TYPEPRINTER$="EPSON" THEN KOMMENTS.PER.LABEL=8: GOTO 170 150 IF TYPEPRINTER$="OTHER" THEN KOMMENTS.PER.LABEL=4: GOTO 170 160 GOTO 6500 170 FOR K=1 TO KOMMENTS.PER.LABEL: INPUT #1,COMMENTS$(K): IF COMMENTS$(K)="" THEN GOTO 180 ELSE NEXT K 180 CLOSE 1: KOUNT=K-1: CN%=VAL(CN$): DIR%=0 190 OPEN "TEMPFILE.ZQW" FOR INPUT AS #1 200 IF EFLAG=55 THEN EFLAG=0: CLOSE: GOTO 190 210 IF EFLAG<>0 THEN GOTO 6500 220 FOR I=1 TO CN% 230 INPUT #1,FILE$(I) 240 IF MID$(FILE$(I),14,5)="<DIR>" THEN FILE$(I)=LEFT$(FILE$(I),8)+"<DIR>": DIR%=DIR%+1: GOTO 260 250 FILE$(I)=LEFT$(FILE$(I),13) 260 NEXT I: CLOSE 299 ' ***** SUBROUTINE TO PRINT LIST OF FILES TO VIDEO ***** 300 IF CLR THEN COLOR 14,1 310 CLS: GOSUB 1000 320 FOR I=1 TO CN%: PRINT FILE$(I);" ";: NEXT I 330 PRINT: PRINT: PRINT"There are";CN%;"files on the disk." 340 PRINT: PRINT"There are";DIR%;"sub-directories on the disk.": PRINT 350 IF TYPEPRINTER$="OTHER" THEN GOTO 570 360 IF (INT(CN%/4)+KOUNT)<7 THEN PRINT "The files will fit on a small label": GOTO 380 370 BEEP: IF CLR THEN COLOR 5,1: PRINT "The files will not fit on one small label": COLOR 14,1 380 BEEP: PRINT: INPUT "Hit <ENTER> to continue"; ZZ$ 399 ' ***** SUBROUTINE TO PICK SIZE OF LABELS ***** 400 IF CLR THEN COLOR 14,0 ' int yellow on black 410 CLS 420 GOSUB 1000 ' print heading 430 LOCATE 5,1: X=POS(0):PRINT STRING$(79-X," ") ' clear to end of line 440 LOCATE 5,10: BEEP: PRINT"What size labels will you be using?" 450 LOCATE 7,15: PRINT "<1> 3 1/2 x 15/16" 460 LOCATE 8,15: PRINT "<2> 4 x 1 7/16" 470 LOCATE 11,10: BEEP : INPUT "> ENTER SELECTION: "; IN$ 480 LABEL.SIZE$=IN$ 490 ON VAL(LABEL.SIZE$) GOTO 510, 560 500 BEEP: LOCATE 15,30: IF CLR THEN COLOR 2,0: PRINT "INVALID RESPONSE":FOR I=1 TO 1000: NEXT I: GOTO 400 510 FILES.PER.LINE=4: LINES.PER.LABEL=8: TOTAL.FILES=140: TEMP.KOUNT=7 520 IF MID$(DISKNAME$,19,1)="M" THEN AMASTER$="YES" 530 IF KOUNT>4 THEN KOUNT=4 540 DISKNAME$=LEFT$(DISKNAME$,15): IF AMASTER$="YES" THEN DISKNAME$=DISKNAME$+" M" 550 LL=57: GOTO 580 560 FILES.PER.LINE=5: LINES.PER.LABEL=15: TOTAL.FILES=260: TEMP.KOUNT=14: LL=64: GOTO 580 570 FILES.PER.LINE=5: LINES.PER.LABEL=8: TOTAL.FILES=120: TEMP.KOUNT=8: LL=64 580 IF CN%>TOTAL.FILES THEN PRINT: PRINT"You are limited to a total of";TOTAL.FILES;" files": CN%=TOTAL.FILES 599 ' ***** PRINT ON VIDEO OR PRINTER ***** 600 PRINT: BEEP : INPUT"Do you want to print on (V)ideo or the (P)rinter";VP$ 610 IF VP$="V" OR VP$="v" THEN OPEN "SCRN:" FOR OUTPUT AS #2: PRINTERFLAG=0 620 IF VP$="P" OR VP$="p" THEN OPEN "LPT1:" AS #2: PRINTERFLAG=1 630 IF PRINTERFLAG=1 THEN GOSUB 2500 640 GOSUB 4000 699 ' ***** SET UP LINE OF FILE NAMES FOR LABEL ***** 700 J=1 710 LABEL$="" 720 FOR M=1 TO FILES.PER.LINE 730 IF MID$(FILE$(J),14,5)="<DIR>" THEN FILE$=LEFT$(FILE$(J),8)+"<DIR>": GOTO 750 740 FILE$=LEFT$(FILE$(J),13) 750 LABEL$=LABEL$+FILE$: IF LABEL.SIZE$="1" THEN LABEL$=LABEL$+" " 760 J=J+1: IF J>CN% THEN GOTO 780 770 NEXT M 780 GOSUB 4000 ' PRINT LINE OF FILE NAMES ON LABEL 790 IF LINECOUNT=LINES.PER.LABEL THEN GOSUB 5000 800 IF J>CN% THEN GOTO 820 810 GOTO 710 820 IF J>TOTAL.FILES THEN GOTO 4500 830 GOSUB 5500 899 ' ***** READ AND PRINT COMMENTS ON LABEL ***** 900 FOR N=1 TO KOUNT: LABEL$=COMMENTS$(N): GOSUB 4000: NEXT N: ICOMMENTS=1 910 IF LINECOUNT>0 THEN GOSUB 5530 920 GOSUB 5000 930 END 999 ' ***** PRINT HEADING ***** 1000 LOCATE 1,17: PRINT STRING$(10,"-")+"L A B E L M A K E R 4.0"+STRING$(10,"-") 1010 LOCATE 3,28: PRINT"DOS 2.0 OPERATING SYSTEM": PRINT: RETURN 1499 ' ***** INITIALIZE AND SET THE PRINTER FOR TITLE ***** 1500 LPRINT CHR$(27)"@"; ' REINITIALIZE THE PRINTER 1510 LPRINT CHR$(27); CHR$(8); ' DISABLE PAPER-END SIGNAL 1520 LPRINT CHR$(27)"3"; CHR$(34); ' SET TO 34/216" LINE SPACING 1530 LPRINT CHR$(27)"G"; ' SET PRINTER TO DOUBLE STRIKE MODE 1540 LPRINT CHR$(27)"E"; ' SET PRINTER TO EMPHASIZED MODE 1550 LPRINT CHR$(14); ' SET PRINTER TO ENLARGED MODE 1560 RETURN 1999 ' ***** INITIALIZE AND SET THE PRINTER FOR FILE NAMES ***** 2000 LPRINT CHR$(27)"@"; ' REINITIALIZE THE PRINTER 2010 LPRINT CHR$(27); CHR$(8); ' DISABLE PAPER-END SIGNAL 2020 LPRINT CHR$(27)"3"; CHR$(16); ' SET TO 16/216" LINE SPACING 2030 LPRINT CHR$(27)"S"; CHR$(0); ' SET TO SUPERSCRIPT MODE 2040 LPRINT CHR$(15); ' SET PRINTER TO CONDENSED MODE 2050 RETURN 2499 ' ***** PROMPT SUBROUTINE ***** 2500 PRINT: PRINT TAB(10)"Line up the labels with the right edge of the backing paper" 2510 PRINT TAB(20)"on 43 on the ruler." 2520 PRINT TAB(10)"If the label is lined up Hit <C> to continue or <A> to abort";: INPUT ZZ$ 2530 IF ZZ$="C" OR ZZ$="c" THEN RETURN 2540 IF ZZ$="A" OR ZZ$="a" THEN GOTO 4530 2550 LOCATE Y,X: PRINT FN A$(79): LOCATE Y,X: GOTO 2520 2560 RETURN 2999 ' ***** PRINT TITLE FOR EPSON PRINTERS ***** 3000 IF PRINTERFLAG=1 THEN GOSUB 1500 ' SET PRINTER FOR TITLE 3010 PRINT: PRINT #2, DISKNAME$ ' PRINT DISK NAME 3020 LINECOUNT=LINECOUNT+1 3030 IF PRINTERFLAG=1 THEN GOSUB 2000 3040 LABEL$=FN B$(LL) ' SET TO PRINT A LINE ACROSS THE LABEL 3050 RETURN 3499 ' ***** SET PRINTER AND PRINT TITLE FOR OTHER PRINTERS ***** 3500 IF PRINTERFLAG=0 THEN GOTO 3580 3510 LPRINT CHR$(18);: LPRINT CHR$(20); ' CANCEL COND & ENL PRINT MODE 3520 LPRINT CHR$(14); ' SET PRINTER TO ENLARGED MODE 3530 WIDTH #2,255: PRINT #2, DISKNAME$ ' PRINT DISK NAME TO LABEL 3540 WIDTH #2,80 3550 LINECOUNT=LINECOUNT+1 3560 LPRINT CHR$(20); ' CANCEL ENLARGED MODE 3570 LPRINT CHR$(15); ' SET PRINTER TO CONDENSED MODE 3580 LABEL$=STRING$(64,"_") 3590 IF PRINTERFLAG=1 THEN RETURN ELSE PRINT #2, DISKNAME$;: RETURN 3999 ' ***** PRINT LINE ***** 4000 IF LINECOUNT<>0 THEN GOTO 4070 4010 IF J>CN% THEN IF KOUNT=0 THEN ICOMMENTS=1 4020 IF J>CN% THEN IF ICOMMENTS=1 THEN RETURN 4030 IF JLABEL =0 THEN GOTO 4050 ELSE IF JLABEL<4 AND PRINTERFLAG=0 THEN PRINT: INPUT"Hit <ENTER> to continue";ZZ$: PRINT 4040 IF JLABEL>=4 THEN GOTO 4500 4050 IF TYPEPRINTER$="EPSON" THEN GOSUB 3000 : JLABEL=JLABEL+1 4060 IF TYPEPRINTER$="OTHER" THEN GOSUB 3500 : JLABEL=JLABEL+1: ' IF PRINTERFLAG=0 THEN PRINT STRING$(64,"_"); 4070 PRINT #2, LABEL$ 4080 LINECOUNT=LINECOUNT+1 4090 IF LINECOUNT=LINES.PER.LABEL THEN RETURN 4100 RETURN 4499 ' ***** END PROGRAM OR PRINT MORE LABELS ***** 4500 CLOSE 2: PRINT: INPUT"DO YOU WANT TO PRINT ANOTHER LABEL OF THIS DISK"; IN$ 4510 IF IN$="Y" OR IN$="y" THEN LINECOUNT=0: J=1: JLABEL=0: ICOMMENTS=0: GOTO 600 4520 IF IN$="N" OR IN$="n" THEN GOTO 4530 ELSE GOTO 4500 4530 IF PRINTERFLAG=1 THEN LPRINT CHR$(27)"@";: SYSTEM ELSE SYSTEM 4999 ' ***** NEW PAGE SUBROUTINE ***** 5000 IF TYPEPRINTER$="EPSON" THEN PRINT #2, FN B$(LL) 5010 IF LABEL.SIZE$="1" THEN PRINT #2, DATE$;" ";CN$;" FILES";" BYTES:";BYTESUSED;"USED ";;FREEBYTES;"FREE": JLABEL=JLABEL+1: GOTO 5030 5020 PRINT #2, DATE$;" ";CN$;" FILES";" FORMAT ";DS$;" BYTES:";BYTESUSED;"USED ";;FREEBYTES;"FREE": JLABEL=JLABEL+1 5030 IF PRINTERFLAG=0 THEN GOTO 5060 5040 IF TYPEPRINTER$="EPSON" THEN LPRINT CHR$(27)"3";CHR$(18) 5050 LPRINT: IF LABEL.SIZE$="1" THEN LPRINT CHR$(27)"3";CHR$(3) 5060 LINECOUNT=0: GOSUB 4000 5070 IF J>CN% THEN IF ICOMMENTS=1 THEN GOTO 4500 ELSE IF J>CN% GOTO 900 5080 RETURN 5499 ' ***** CONDITIONAL PAGE SUBROUTINE ***** 5500 IF TEMP.KOUNT-LINECOUNT<KOUNT THEN GOSUB 5530 ELSE LABEL$=FN B$(LL): GOSUB 4000: GOTO 5520 5510 GOSUB 5000: GOSUB 4000 5520 RETURN 5530 BLANKS=LINES.PER.LABEL-LINECOUNT 5540 FOR I=1 TO BLANKS 5550 LABEL$="" 5560 GOSUB 4000 5570 NEXT I 5580 RETURN 5999 ' ***** generic error handler ***** 6000 EFLAG=ERR:ELINE=ERL:RESUME NEXT 6499 ' ***** fatal error handler ***** 6500 PRINT"fatal error ";EFLAG;" occurred at line ";ELINE 6510 STOP 6999 ' ***** MENU OF GOTO'S AND GOSUB'S ***** 7000 GOTO 10 ' initialize the program 7010 GOTO 100 ' read in the data 7020 GOTO 300 ' print files to video 7030 GOTO 400 ' pick size of labels 7040 GOTO 600 ' print on screen or printer 7050 GOTO 700 ' set up line of filenames 7060 GOTO 900 ' read and print comments 7070 GOSUB 1000 ' print heading on screen 7080 GOSUB 1500 ' set printer for title 7090 GOSUB 2000 ' set printer for file names 7100 GOSUB 2500 ' prompt subroutine for labels 7110 GOSUB 3000 ' print title for Epson printer 7120 GOSUB 3500 ' print title for other printers 7130 GOSUB 4000 ' print line or files on label 7140 GOSUB 4500 ' ask about more labels 7150 GOSUB 5000 ' new page subroutine 7160 GOSUB 5500 ' conditional page subroutine 7170 GOSUB 6000 ' error subroutine 7180 GOSUB 6500 ' fatal error subroutine 7190 GOSUB 7000 ' routine library 7200 ' ***** LAST LINE *****